文档章节

c++拷贝构造函数可以访问私有成员

startstorm
 startstorm
发布于 2017/02/27 11:21
字数 344
阅读 53
收藏 0

在学习拷贝构造函数的时候,突然发现拷贝构造函数里面可以访问私有成员。当时很疑惑,和c++类的private私有属性不同。但是编译器可以编译通过。

class  MyString
{
public:
	MyString(int len = 0);
	MyString(const MyString& s);
	~MyString();
private:
	int	m_len;
};
MyString::MyString(const MyString& s)
{
	m_len = s.m_len;
	m_p = new char[m_len + 1];
	strcpy(m_p, s.m_p);
}

引用C++标准原文
A member of a class can be
— private; that is, its name can be used only by members and friends of the class in which it is
declared.
— protected; that is, its name can be used only by members and friends of the class in which it is
declared, and by members and friends of classes derived from this class (see 11.5).
— public; that is, its name can be used anywhere without access restriction.

访问限制标号是针对类而不是针对一个类的不同对象,只要同属一个类就可以不用区分同一个类的不同对象。因为 是类的成员函数,所以有权限访问私有数据成员。如果是在main函数中直接,那肯定就会报错了,不能访问,因为这是在类外不能访问私有数据成员。一个类的成员函数可以访问这个类的私有数据成员,我们要理解这个对类的访问限制,而不是针对对象。

参考:http://http://blog.csdn.net/peng314899581/article/details/51895998

© 著作权归作者所有

共有 人打赏支持
startstorm
粉丝 6
博文 53
码字总数 21034
作品 0
浦东
程序员
私信 提问
const成员函数,内联函数,友元函数,static成员

1.const成员函数 2.内联函数 3.友元 4.static成员 5.N中构造拷贝构造的优化 1.const成员函数 const修饰成员函数 在成员函数后面加const,const修饰this指针所指向的对象,也就是保证调用这个...

qq_38646470
04/02
0
0
c语言基础学习11_项目实战:IDE(集成开发环境)

============================================================================= ============================================================================= 涉及到的知识点有: 一......

黑泽明军
01/29
0
0
C++11 中值得关注的几大变化(详解)

源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 (and Why You Should Care),赖勇浩做了一个中文翻译在这里。所以,我就不翻译了,我在这里仅对文中提到的这些变...

红薯
2011/08/19
3.2K
14
复习C++基础知识-----“我的第一本C++”读书笔记1

Debug : 在单独运行时,往往需要编译器提供一些库文件 Release : 可以在没有安装visual c++的computer上正常运行 常规设置 1) 在共享DLL中使用MFC : 表示把程序中用到的MFC类库作为动态链接库...

OScoder2
2014/04/08
0
0
C++11 中值得关注的几大变化

源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 (and Why You Should Care),赖勇浩做了一个中文翻译在这里。所以,我就不翻译了,我在这里仅对文中提到的这些变...

雅各宾
2014/01/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在Angular中使用better-scroll插件

由于需要在一个固定的的高度做无限滚动,本来css的overflow-y也可以完成的,奈何安卓不是很流畅,还很生硬,就是用了第三方库better-scroll,配合angular的ng-content。angular的ng-content和...

前端攻城老湿
11分钟前
2
0
Js中apply和Math.max()函数的问题及区别

这篇文章主要介绍了js中apply和Math.max()函数的问题,本文给大家带来两种答案,每一种答案给大家介绍的非常详细,在文章底部给大家提到了js中Math.max.apply和Math.max的区别,写的十分的全...

前端攻城小牛
11分钟前
2
0
解决 SpringBoot 不继承父starter-parent打包不包含依赖的问题

由于项目需要继承自己平台的父 parent , 有的模块是纯 api ,不能有任何依赖, 所以父 parent 不能直接引入 springboot, 单独给非 boot 项目排除依赖的话又特别的麻烦, 且不好把控。 记得刚接触...

stys35
13分钟前
1
0
vuex进阶知识点巩固

我们先回忆一下上一篇的代码 computed:{ getName(){ return this.$store.state.name }} 这里假设现在逻辑有变,我们最终期望得到的数据(getName),是基于 this.$store.state.na...

嫣然丫丫丫
28分钟前
1
0
Python出现安全策略问题的解决方法

Python运行期间出现如下错误 import: attempt to perform an operation not allowed by the security policy `PS' @ error/constitute.c/IsCoderAuthorized/408. 解决方法:在脚本的开头添加......

大糊涂
36分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部