//c++类 初始化 与 初始赋值
//C++规定 对象的 成员变量 初始化 动作发生 在进入 构造函数本体 之前 。 在构造函数内 成员变量赋值都属于 赋值 。
class People {
public:
People( std::string name, int age, int height );
private:
std::string m_sName;
int m_iAge;
int m_iHeight;
}
/*
* 赋值
* 赋值时首先调用默认构造函数为m_sName,m_iAge,m_iHeight赋初始值,然后在立刻调用赋值操作符进行赋新值。
*/
People::People( std::string name, int age, int height )
{
m_sName = name;
m_iAge = age;
m_iHeight = height;
} /*
* 初始化列表
* 成员初始列表是将各个成员变量实参都作为复制构造函数的实参
*/
People::People( std::string name, int age, int height )
: m_sName( name ), m_iAge( age ), m_iHeight( height )
{
} /* 所以看出赋值相对于初始化,多了一步就是使用赋值操作符进行赋值。所以初始化的效率比赋值的效率高多了。但是对于内置类型,它们效率是一样的。 */ /* 多态调用 */
#include <iostream>
using namespace std; class A
{
public:
void foo()
{
printf( "1\n" );
}
virtual void fun()
{
printf( "2\n" );
}
};
class B : public A
{
public:
void foo()
{
printf( "3\n" );
}
void fun()
{
printf( "4\n" );
}
};
int main( void )
{
A a;
B b;
A *p = &a; p->foo(); /* 1 */
p->fun(); /* 2 */
p = &b;
p->foo(); /* 1//非虚方法和默认参数都是静态绑定,在继承关系中只跟指针类型有关 */
p->fun(); /* 4//虚函数动态绑定, 跟指针类型相关 */ B *q = (B *) &a;
q->foo(); /* 3 */
q->fun(); /* 2 */ system( "PAUSE" );
return();
} /*
* 友元函数
* 定义:友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。
*/
#include <iostream>
using namespace std; class Point; class Test
{
public:
int priority( Point & p ); /* 因为先声明Point,所以这里不出错 */
};
class Point
{
public:
Point( double xx, double yy, int pri )
{
x = xx; y = yy; priority = pri;
}
void Getxy();
friend double Distance( Point & a, Point & b ); /* 申明全局函数作友元,全局函数的定义必须放在ca这个类的后面 */
friend int Test::priority( Point & p ); /* 申明申明Test类的priority()函数作友元作友元,全局函数的定义必须放在ca这个类的后面 */
private:
double x, y;
int priority;
}; void Point::Getxy()
{
cout << "(" << x << "," << y << ")" << endl;
}
double Distance( Point & a, Point & b ) /* 全局函数 */
{
double dx = a.x - b.x;
double dy = a.y - b.y;
return(sqrt( dx * dx + dy * dy ) );
}
int Test::priority( Point & p ) /* //作友元函数必须在Point类的后面实现,否则会因为Point成员就未定义而出错; */
{
return(p.priority);
} int main()
{
Point p1( 3.0, 4.0, ), p2( 6.0, 8.0, );
p1.Getxy();
p2.Getxy();
double d = Distance( p1, p2 );
Test t;
int pri = t.priority( p1 );
cout << "Distance is " << d << endl;
cout << "p1 priority is " << pri << endl;
system( "PAUSE" );
return();
} /*
* (1)友元关系不可以继承,但对已有的方法来说访问权限不改变。
*
* (2)如果改写基类的方法则访问权限改变
*
* (3)友元关系不具有传递性
*
* 若类B是类A的友元,类C是B的友元,类C不一定是类A的友元。
*/

c++ basic 整理1的更多相关文章

  1. c++ basic 整理2

    ​//拷贝函数 //拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量. //不显式指定拷贝函数时,编译器会生成默认拷贝函数. //使用默认拷贝函数 ...

  2. .NET Web开发技术简单整理

    在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...

  3. WIFI基本知识整理

    这里对wifi的802.11协议中比较常见的知识做一个基本的总结和整理,便于后续的学习.因为无线网络中涉及术语很多,并且许多协议都是用英文描述,所以有些地方翻译出来会有歧义,这种情况就直接英文来描述了 ...

  4. wifi基础知识整理

    转自 :http://blog.chinaunix.net/uid-9525959-id-3326047.html WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总 ...

  5. Basic认证

    Basic 概述 Basic 认证是HTTP 中非常简单的认证方式,因为简单,所以不是很安全,不过仍然非常常用. 当一个客户端向一个需要认证的HTTP服务器进行数据请求时,如果之前没有认证过,HTTP ...

  6. PC-1500收集整理记

    目录 第1章计算器    1 1.1 存储卡    2 1.2 取出"牛皮糖"    4 1.3 打磨键盘按钮    6 1.4 通电    7 第2章底座    10 2.1 去 ...

  7. SQL调用系统存储过程整理

    SQL系统存储过程用法整理: xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 xp_loginconfig --*报 ...

  8. Demo学习: Basic jQuery

    UniGUI是一套基于ExtJS的Delphi的WEB框架,它是使用ExtPascal来转化到ExtJS,ExtJS是一个跨浏览器的JavaScript库,因此UniGUI发布出来的程序可以在各种浏览 ...

  9. .NET代码编写规范 整理

    .NET代码编写规范 整理 .NET代码编写规范 - [ASP.NET] 2009-02-26 | Tag: 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://lensp ...

随机推荐

  1. nginx日志中文变成类型\xE9\xA6\x96\xE9\xA1\xB5-\xE6\x8E\xA8\xE8\x8D\x90的东西

    感谢 http://my.oschina.net/leejun2005/blog/106791 代码如下: public class App { public static String str2He ...

  2. DOM--6 向应用程序中加入ajax

    组合技术 适当的ajax时对已有技术和下列思想的组合 语义化(X)HTML标记 文档对象模型(DOM) JavaScript XML 不同浏览器中,公共XMLHttpRequest方法 open(me ...

  3. [xsd学习]xsd介绍

    一直以来项目中对xml格式的判断使用的都是dtd格式,直到最近才发现,不知何时都已经转为xsd来进行判断和校验,于是今天专门找资料看下,不得不说,对于这类资料的入门,w3cschool真是个不错的资料 ...

  4. 解决Genymotion无法创建新设备或无法显示设备列表问题

    准备工作: 链接: https://pan.baidu.com/s/1i5v4IBN 密码: jc3m 用2.8的和最新VirtualBox-5.1.10-112026-Win 注意事项: 1.笔记本 ...

  5. AspNetPager 样式以及使用(漂亮)

    自定义样式: <style type="text/css"> /*拍拍网风格*/ .paginator { font: 11px Arial, Helvetica, s ...

  6. 转 : 用Delphi编写安装程序

    http://www.okbase.net/doc/details/931  还没有亲自验证过,仅收藏 当你完成一个应用软件的开发后,那么你还需要为该软件做一个规范化的安装程序,这是程序设计的最后一步 ...

  7. MR并行算法编程过程中遇到问题的思考

    1. Reducer 类中 reduce函数外定义的变量是在Reducer机器上属于全局变量的,因此,一台机器上reduce函数均可以对该变量的值做出贡献.如代码:(sum和count数据Reduce ...

  8. Prerequisites?[HDU1144]

    Prerequisites?Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...

  9. git 回滚

    git reset --hard HEAD~10 可以通过上面的命令会退到最初的版本查看源代码, git reset --hard 4aa9a32d1625997ef5b28463ccde78d711 ...

  10. <构建之法>第十一章、十二章有感

    十一章:软件设计与实现 工作时要懂得平衡进度和质量.我一直有一个困扰:像我们团队这次做 男神女神配 社区交友网,我负责主页的设计及内容模块,有个队友负责网站的注册和登录模块,有个队友负责搜索模块,有个 ...