C++新手问一个在函数中关于可见性的小问题

是一个书上看的例子是C++primer plus上的例题,我产生了一点疑问。希望有老鸟帮助
![图片说明图片说明我在后面那个重载运算符中的b的x应该是不可见的呀,为什么这个函数通过了编译?

3个回答

成员函数能够访问其所属的类中的变量(无论是私有还是公有),注意,不是其所属对象中的变量

qq_34365032
白色摇摆 嗯,了解了,谢谢
3 年多之前 回复
qq_34365032
白色摇摆 是因为operator+是成员函数,所以参数是A也能识别么?
3 年多之前 回复

http://codepad.org/Rz5LQbYT
我这里报错
In function 'int main()':
Line 5: error: 'int A::x' is private

你这里真正的错误应该是a.x=3那里吧?私有变量只能通过成员函数去访问

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++中 作用域及可见性
作用域是用来表示某个标识符在什么范围内有效,可见性是指标识符是否可见,可引用。  1.作用域        作用域是这样一个区域,标识符在程序的这个区域内是有效的。C++的作用域主要有四种:函数原型作用域、块作用域、类作用域和文件作用域。        a.函数原型作用域        函数原型大家还记得吗?比如:void fun(int x);这个语句就是函数原型的声明。函数原型
函数定义和调用
定义函数在JavaScript中,定义函数的方式如下:function abs(x) { if (x >= 0) { return x; } else { return -x; } } 上述abs()函数的定义如下:function指出这是一个函数定义;abs是函数的名称;(x)括号内列出函数的参数,多个参数以,分隔;{ ... }之间...
C++变量的可见性
我们之前介绍过,在某一个函数中,不应该有两个名字相同的变量。可是,我们拿下面这段程序代码(程序11.1.3)去测试一下,发现居然在同一个函数中可以有两个名字相同的变量。这又是怎么回事呢?编译器又是如何辨别这两个名字相同的变量的呢? #include "iostream.h" int main() {    int a=3,b=4;    {       int a=5,b=6;  
成员函数的可见性
成员函数的可见性 良好的程序设计应该尽可能减小类与类之间耦合,所遵循的经验法则是:尽量限制成员函数的可见性。如果成员函数没必要公有 (public),就定义为保护 (protected);没必要保护 (protected),就定义为私有 (private)。 可见性 说明 正确用法 public 公有成员函数可被任何
C语言函数练习题
关于C语言的函数练习题 让新手练习函数的使用
C++作用域和可见性
这些必知的知识包括作用域、可见性和生存期,还有局部变量、全局变量、类的数据成员、静态成员及友元和数据等。这一讲鸡啄米会给大家详细讲讲作用域和可见性。作用域是用来表示某个标识符在什么范围内有效,可见性是指标识符是否可见,可引用。        1.作用域        作用域是这样一个区域,标识符在程序的这个区域内是有效的。C++的作用域主要有四种:函数原型作用域、块作用域、类作用域和文
php类函数和成员方法的可见性和属性
php类和成员函数的可见性和成员方法属性~~
关于wndlpszClassName的一个小问题(新手)
书上的example写的是: char lpszClassName[] = "自己创建的窗口"; wndclass.lpszClassName = lpszClassName; 但是在编译的时候就报错了。。。 百度了一下说是字符集的问题, #include 并且改为 wndclass.lpszClassName = _T("自己创建的窗口"); 就可以了。
JAVA中域、方法、类的可见性
JAVA中域、方法、类的可见性 复习一下,总结一下。 如下类PublicClass [java] view plaincopyprint? /**   * 公共类,在所有包中可见   * @author OOS   *   */   public class PublicClass {  
C语言函数参考
这是一个关于C语言函数的参考手册,里面有详细的介绍C语言常用函数的用法、函数功能、函数接口等等,非常适合C语言新手参考
C/C++中控制动态库的符号可见性
一、需求 写了一个动态库供客户使用,此库使用了一些第三方静态库,无奈客户也使用了这些第三方库,从而产生了符号冲突。 所以需要隐藏此库中第三方库的导出符号。 二、可选解决方案 解决方案优点缺点static 关键字简单语言级别支持static 关键字限定变量或函数只可以在定义它的文件范围内使用导出列表消除了 static 关键字上的限制不需要更多的代码可以关联版本信息具有不同粒度的符号可见性控...
关于C语言的面试问题
今天,参加了一个公司的面试,下面写一下一些感想和想法。 那个公司叫高知特信息技术(上海)有限公司,还是个美国财富500强,上市公司。听那个宣讲人说的很牛X的。 那个宣讲人大致给我们介绍了一下情况。就是高知特信息技术有限公司上海分公司委托他们公司招聘25名工程师,并 且包括培训业务。他们是个培训公司,经常和大公司合作招聘和培训,然后往公司里输送人才。 大家都知道,世界500强公司
5、并发编程的3个概念:原子性、可见性、有序性
并发程序正确地执行,必须要保证原子性、可见性以及有序性。只要有一个没有被保证,就有可能会导致程序运行不正确。 原子性:一个操作或多个操作要么全部执行完成且执行过程不被中断,要么就不执行。 可见性:当多个线程同时访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。 有序性:程序执行的顺序按照代码的先后顺序执行。 对于单线程,在执行代码时jvm会进行指令重排序,处理器
关于fork()函数父子进程之间的问题
本程序的运行环境是在Linux的发行版Ubuntu下运行的,首先代码如下: #include #include #include   int main(void) {        printf("abc\n");        pid_tr = fork();        if(r==0)        {                 printf("chPID=
问一个小问题?
设计一个算法,将数组A[1..n]中的元素循环右移k位,并要求只用一个元素大小的辅助存储空间,元素移动或交换的次数为0(n)。要求用描述语言写出算法思路,并用C语言实现。C语言代码要求尽可能的每行做文字注解。请大家帮忙看一看,谢谢.
volatile是否能保证数组中元素的可见性?
在javaeye有位朋友问了我一个非常好的问题。 问题 一个线程向volatile的数组中设置值,而另一个线程向volatile的数组中读取。 比如seg.setValue(2),随后另一个线程调用seg.getValue(2),前一个线程设置的值对读取的线程是可见的吗? 我看书上说volatile的数组只针对数组的引用具有volatile的语义,而不是它的元素。 Concu
c/c++面试官经常提的问题
1.自我介绍一下 2.你擅长的技术 3.你遇到过的一些问题,及怎么解决的 4.你负责项目的哪些模块 5.用到过的工具有哪些 6.目前的新技术有了解吗? 7.重载多态覆盖 8.多态写法及实现原理讲一下 9.stl相关 1.指针的各种用法 2.static  const #define 他们的用法,用处 3.智力题 4.位操作 5.各种排序算法 6.宽字符的处理 7.数据
C#开发过程中碰到的问题 经验总结
1年的工作经验 各位编码的兄弟 欢迎继承 避免你们在工作中碰到这样的问题,能快速的解决,此文档针对新手有用,编码超过2年的可以不用下载。 对于新人在工作中给予鼓励与支持。记得要保留下你们处理问题的方法,总结后分享给后来的人!
关于《C语言深度剖析》之编译器的bug问题
关于《C语言深度剖析》之编译器的bug问题 编译器的bug? 另外一个有意思的现象,在Visual C++ 6.0调试如下代码的时候却又发现一个古怪的问题: int *p = (int *)0x12ff7c; *p = NULL; p = NULL; 在执行完第二条代码之后,发现p 的值变为0x00000000 了。按照我么上一节的解释,应该p的值不
关于泛型和重载的小问题
 首先描述问题,看代码。代码例子:view plaincopy to clipboardprint?import java.util.ArrayList;   public class Test {       public static String test(ArrayList list){           return "";       }       public static Integer test(ArrayList list){           return 1;       } 
c++ 成员可见性
在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。 派生类的定义格式 单继承的定义格式如下: class : { }; 其中,class是关键词,是新定义的一个类的名字,它是从中派生的,并且按指定的派生的。常使用如下三种关键字给予表示: public 表示公有基类;
一个有趣的小问题
有兄弟三人:大毛,二毛,三毛。有帽子五顶:三顶蓝色,两顶红色。将这五顶帽子随机发给三个 兄弟,三兄弟站成一列,后面的人能看见站在他前面的人,按大毛、二毛、三毛的顺序站好。 帽子分发好后,大毛问三毛:你知道你的帽子是什么颜色的吗? 三毛说:我不知道。
面试题中常见的内存分配问题汇总
最近在准备面试,面试职位为C++软件开发类型,虽然还没有与某公司签约,但是经过多次的面试经验及过程进行分享! 程序的内存分配问题是每个IT公司都会问道的一个问题!现就内存分配问题分享我的总结。 内存总共有以下5类存储区:堆区、栈区、全局(静态)存储区、文字常量区以及程序代码区。 堆区:由程序员手动分配内存和释放内存,分配方式类似链表;若程序员不释放内存,则在程序结束时由系统释放。   在c
数组的两个小问题
1.不可以对数组名(指针常量)进行赋值操作2.对数组进行整体赋值只能在最初声明的时候进行。
AMDD 一个把大问题分成小问题的优化算法
还没看懂,先记下地址“ 这个博客上有基础知识: http://www.cnblogs.com/breezedeus/p/3496819.html 下面是AMDD http://web.stanford.edu/~boyd/admm.html
算法程序设计——找第k小的数
找第k小的数 Time Limit: 1000MS Memory Limit: 65536K     Description         设计一个平均时间为O(n)的算法,在n(1         Input    
一个小问题~~线性同余方程组
链接:https://www.nowcoder.net/acm/contest/75/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 uu遇到了一个小问题,可是他不想答。你能替他解决这个问题吗? 问题:给你k对a和r是否存在一个正整数x使
Go语言编程(十四)之可见性
Go语言对关键字的增加非常吝啬,其中没有private、protected、public这样的关键字。要使某个符号对其他包(package)可见(即可以访问),需要将该符号定义为以大写字母开头,如: type Rect struct {   X, Y float64   Width, Height float64 } 这样,Rect类型的成员变量就全部被导出了,可以被所有其他引用了Rec
Golang语法总结(三):可见性规则(公有与私有,访问权限)
Go语言没有像其它语言一样有public、protected、private等访问控制修饰符,它是通过字母大小写来控制可见性的,如果定义的常量、变量、类型、接口、结构、函数等的名称是大写字母开头表示能被其它包访问或调用(相当于public),非大写开头就只能在包内使用(相当于private,变量或常量也可以下划线开头)     例如:     visibility/test.go
Kotlin学习笔记(五)接口,可见性修饰符
提示:本文为作者阅读Kotlin中文站学习笔记,建议读者移步Kotlin中文站完整学习。接口Kotlin中,使用关键字interface定义一个接口。与Java8类似,接口中即可以包含抽象方法的声明,也可以包含实现。与抽象类不同的时,接口不保存属性的状态,属性要么声明为抽象,要么提供访问器实现。并且在接口中声明的属性没有幕后字段,所以在访问器中不能引用field字段。interface Base {
JAVA的原子性和可见性的理解
1、原子性 (1)原子是构成物质的基本单位(当然电子等暂且不论),所以原子的意思代表着——“不可分”; (2)原子性是拒绝多线程操作的,不论是多核还是单核,具有原子性的量,同一时刻只能有一个线程来对它进行操作。简而言之,在整个操作过程中不会被线程调度器中断的操作,都可认为是原子性。例如 a=1是原子性操作,但是a++和a +=1就不是原子性操作。  2、非原子性   (1)也就
C++学习笔记
关于C++类与对象中的构造函数与析构函数,以及作用域与可见性
互斥锁和内存可见性
一:引言          POSIX线程遵循一种共享状态的并发模型。在这种模型中,若干线程同时访问共享对象时,需要在线程间有合适的协调机制。特别是,需要以下特性来简化这种模型中的编程:          原子性访问:当某个线程正在修改共享对象时,需要避免另一个线程访问它;          内存可见性:一旦某个线程修改了共享对象,我们希望当修改发生后,在另一个线程中就能立即得到最新的状态。
面试必问的CAS,你懂了吗?
概述CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS也是现在面试经常问的问题,本文将深入的介绍CAS的原理。案例介绍CAS之前,我们先来看一个例子。上面这个例子在volatile关键字详解文中用过,我们知道,运行完这段代码之后,并不会获得期望的结果,而且会发现每次运行程序,输出的结果都不一样,都是一个小于...
【C语言】一个关于if的小问题
代码一:#include<stdio.h>void main() { int a = 20; if( 1 <= a <= 10 ) printf("aaa"); else printf("vvv"); } 运行结果: 代码二:#include<stdio.h>void main() { int a = 20; if( 10 >=
C关于字符串的一个小问题
char *aa=(char*)malloc(20);   aa[0]='b';   char *bb="sdfsdfsdf";   bb[0]='b';   char cc[]="asdfsdfsd";   cc[0]='b';
关于C语言的一个小问题
今天无意被问到一个小问题,于是我就写下了如下的代码: #include int main(){ int num; char ch; float number1,number2; scanf("%f%d%c%f",&number1,&num,&ch,&number2); printf("%c %d %.2f %.2f",ch,num,number1,number2); return 0
Button的使用(十三):设置可见性
用setVisibility,设置可见传参数View.VISIBLIE,不可见传View.INVISIBLE package com.example.androidtest; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; imp
新手关于几个游戏引擎的理解
这段时间由于对PC游戏制作比较感兴趣,并且自己也是编程的,但是Java方向的。 刚开始了解的时候是在百度上面看别人的提问之类的,知道了Unity3D和cocos2D,知道了Unity3D可以做3D和2D游戏,所以便开始买相关的书籍,找相关的资料看,但是随着越来越深的了解,并且在一些吧里面知道了更深的一些东西:Unity3D没有大作,都用Unity做一些中小游戏,主要方向是移动端的游戏,也就是我们
Python 新手练习100例
从网络上找来50例python练习题,供大家一起学习研究。
Controlling Symbol Visibility (在C/C++中控制符号的可见性)
摘要:在apple的文档中发现一篇关于符号可见性介绍的好文《Controlling Symbol Visibility》,在学习的过程中对关键部分顺带翻译下。
问一个关于c的问题
=NULL){ fputs(l 4096 "w"); while(fgets(l "r"); n=fopen(Nextpath *n; char l[4096]; f=fopen(Filepath char* Nextpath){ FILE *f 没试过不要乱说#includevoid FileCopy(char* Filepath 楼上的 i); system(buf); }}
问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。 输入格式 输入一个正整数N。 输出格式 输出一个整数,表示你找到的最小公倍数。 样例输入 9 样例输出 5
最大公约数 与最小公倍数之间的关系 贪心算法
c语言中的文件操作的相关函数(知识)
C语言中文件操作相关的函数2007-12-15 14:07 1C语言文件1,1两种文件存取方式(输入,输出方式)顺序存取直接存取1.2数据的两种存放形式文本文件二进制文件 2文件指针定义文件类型指针变量的一般形式:FILE *指针变量名;例如:FILE *fp1,*fp2;
浅谈页面可见性API
1、页面可见性: ① 一次可以打开好多标签页,标签页可以来回切换,但始终只有一个页面在眼前,其他标签页是隐藏的; ② 把浏览器最小化,所有的标签页就都不可见了。 2、页面可见性API定义了2个只读的document属性: ① document.hidden:返回一个布尔值,true表示页面可见,false则表示页面隐藏。 ② document.visibilityState:
C++中继承的可见性分析
这次主要搞清了类的成员和继承方式中的protected属性。简单说,它对内可见,对外私有。与private属性不同的是,对于父类中的protected成员,继承后在子类中依然可见。如果上述继承以private方式进行,protected成员在继承后会成为private成员。 //Inherency.cpp//demo of the inherency property in C++#i
volatile 关键字的如何保证内存可见性
volatile关键字的作用 保证内存的可见性 防止指令重排 注意:volatile 并不保证原子性 内存可见性 volatile保证可见性的原理是在每次访问变量时都会进行一次刷新,因此每次访问都是主内存中最新的版本。所以volatile关键字的作用之一就是保证变量修改的实时可见性。 当且仅当满足以下所有条件时,才应该使用volatile变量 对变量的写入操作不依赖变量的当前值
JAVA类成员的可见性
群里讨论了很激烈的一个问题,java中类成员
C语言文件函数
关于c语言文件操作所要用到的函数,以及如何使用,适合新手!
Java中修饰符的作用域及可见性
java+ 作用域+
相关热词 c# singleton c#中类的默认值是 c#各种进制之间的转换 c# 正则表达式保留汉字 c#后台跨域 c#基础代码大全 c#指定combox选择 c#关系 mono c# 相差毫秒 用c#做一个简易计算器
立即提问