C++友元
Guderian出品
本文整理自《北京大学公开课:C++面向对象程序设计》友元很简单,在某种程度上算作是C++设计者对C使用者的妥协。友元分为友元函数和友元类两种。
友元函数
一个类的友元函数可以访问该类的私有成员,友元函数不是这个类的成员函数,可以是一个普通的全局函数或其他类的成员函数
1 | class CCar; //提前声明CCar是一个类,以便后面的CDriver类使用 |
可以将一个类的成员函数(包括构造、析构函数)说明为另一个类的友元
1 | class B |
---A Cyber Driver---
Guderian出品
本文整理自《北京大学公开课:C++面向对象程序设计》友元很简单,在某种程度上算作是C++设计者对C使用者的妥协。友元分为友元函数和友元类两种。
一个类的友元函数可以访问该类的私有成员,友元函数不是这个类的成员函数,可以是一个普通的全局函数或其他类的成员函数
1 | class CCar; //提前声明CCar是一个类,以便后面的CDriver类使用 |
可以将一个类的成员函数(包括构造、析构函数)说明为另一个类的友元
1 | class B |
图:广州塔
Guderian出品
本文整理自《北京大学公开课:C++面向对象程序设计》如果不希望某个对象的值被改变,则定义该对象的时候可在前面加const
关键字。
1 | class CDemo |
在类的成员函数说明后面可以加const
关键字,则该成员函数成为常量成员函数。
常量成员函数执行期间不应该修改其所作用的对象。因此,在常量成员函数中不能修改成员变量的值(静态成员变量除外),也不能调用同类的非常量成员函数(静态成员函数除外)。
非常亮成员函数在执行的过程中是有可能修改掉常量成员函数中的值的。
1 | class Sample |
两个成员函数,名字和参数表都一样,但是一个是const
,一个不是,算重载,而不是重复定义。
1 | class CTest |
引用前面可以加const
关键字,成为常引用。不能通过常引用,修改其引用的变量。
1 | const int &r = n; |
图:广州天河CBD
Guderian出品
本文整理自《北京大学公开课:C++面向对象程序设计》X::X(X &)
或X::X(const X &)
,二者选一,后者能以常量对象作为参数1 | class Complex |
1 | class Complex |
注意:不允许有形如X::X(X)
的复制构造函数,参数一定是引用,不能是对象
1 | class CSample |
1 | Complex c2(c1); |
那么该函数被调用时,类A
的复制构造函数将被调用。C++
规则:形参是实参的拷贝
1 | class A |
那么在函数返回时,A
的复制构造函数被调用,作用是初始化作为返回值的类A
对象
1 | class A |
图:深圳福田CBD
Guderian出品
本文整理自《北京大学公开课:C++面向对象程序设计》void
也不行)注:如果只定义了带参构造函数,在定义对象时必须声明参数
1 | class Circle |
只要不同的构造函数的参数个数和参数类型不同,这些构造函数就会构成重载的关系
1 | class Circle |
Guderian出品
$(2)\int1\mathrm{dx}=x+C$
$(3)\int x^\mu \mathrm{dx}=\frac1{\mu+1}x^{\mu+1}+C(\mu \ne -1)$
$(4)\int\frac1{x}\mathrm{dx}=\ln|x|+C$
$(5)\int a^x \mathrm{dx}=\frac{a^x}{\ln a}+C$
$(6)\int e^x \mathrm{dx}=e^x+C$
$(7)\int \sin x \mathrm{dx}=-\cos x +C$
$(8)\int \cos x \mathrm{dx}=\sin x +C$
$(9)\int \sec^2 x \mathrm{dx}=\int \frac1{\cos^2 x}\mathrm{dx}=\tan x+C$
$(10)\int \csc^2x\mathrm{dx}=\int \frac1{\sin^2x}\mathrm{dx}=-\cot x +C$
$(11)\int\sec x\tan x\mathrm{dx}=\sec x+C$
$(12)\int \csc x\cot x\mathrm{dx}=-\csc x +C$
$(13)\int \frac{\mathrm{dx}}{\sqrt{1-x^2}}=\arcsin x+C$
$(14)\int \frac{\mathrm{dx}}{1+x^2}=\arctan x+C$
$(15)\int \tan x\mathrm{dx}=-\ln|\cos x|+C$
$(16)\int \cot x \mathrm{dx}=\ln|\sin x|+C$
$(17)\int \sec x \mathrm{dx}=\ln|\sec x+\tan x|+C$
$(18)\int \csc x\mathrm{dx}=\ln|\csc x -\cot x|+C$
$(19)\int \frac{\mathrm{dx}}{x^2+a^2}=\frac1{a}\arctan {\frac{x}{a}}+C$
$(20)\int \frac{\mathrm{dx}}{x^2-a^2}=\frac1{2a}\ln|\frac{x-a}{x+a}|+C$
$(21)\int \frac{\mathrm{dx}}{\sqrt{a^2-x^2}}=\arcsin \frac{x}{a}+C$
$(22)\int \frac{\mathrm{dx}}{\sqrt{x^2\pm a^2}}=\ln|x+\sqrt{x^2\pm a^2}|+C$
$(23)\int \sqrt{a^2-x^2}\mathrm{dx}=\frac{x}{2}\sqrt{a^2-x^2}+\frac{a^2}{2}\arcsin \frac{x}{a}+C$
$(24)\int \sqrt{x^2\pm a^2}\mathrm{dx}=\frac{x}{2}\sqrt{x^2\pm a^2}\pm \frac{a^2}{2}\ln|x+\sqrt{x^2\pm a^2}|+C$
$(25)\int \ln x\mathrm{dx}=x\ln x-x+C$