今天主要了解了一下C++虚函数和纯虚函数的用法。C++的虚函数主要是用来实现多态,且多态分为两种,静态和动态。静态多态,为编译时多态;动态多态,为运行时多态。静态多态,由函数重载和运算符重载实现。动态多态,由虚函数实现。虚函数多态的实现主要是靠虚函数表来实现的。详细内容参考:http://blog.csdn.net/haoel/article/details/1948051/ 而虚函数和纯虚函数的区别在于:虚函数是为了实现多态,其父类中有相应的实现方法;...
?构造函数 –和类名相同 –没有返回值类型 –只在建立对象的时候被自动调用一次 –调用构造函数的主要目的是初始化对象?一个对象的创建过程: –分配内存空间 –初始化成员变量,如果成员是对象,构造他 –调用构造函数?默认的空参构造函数构造函数的使用?构造函数重载 –构造函数也是函数,拥有重载的特征 –重载的构造函数在构造对象时根据参数自动选择?利用参数默认值简化构造函数 –构...
要修改变量的值,需要使用变量类型的指针作为参数或者变量的引用。如果变量是一般类型的变量,例如int,则需要使用int 类型的指针类型int *作为参数或者int的引用类型int&。但是如果变量类型是指针类型,例如char*,那么需要使用该类型的指针,即指向指针的指针类型 char* *,或者该类型的引用类型char*&。 首先要清楚 不管是指针还是值传入函数后都会创建一个副本,函数结束后值内容不能传出来是因为值的副本,而传入的值并没被修...
1.静态成员函数可以用普通函数指针储存,普通成员函数必须用类函数指针储存class A
{
public:static void fun(){cout << "hello world" << endl;}
public:void fun2(){}
};
int main()
{void(*p)() = &A::fun;//用普通函数指针,正确void (*p1)() = &A::fun2;//用普通函数指针,错误void(A::*p2)() = &A::fun2;//正确,用类的函数指针void(A::*p3)() = &A::fun;//错误,静态成员函数用类函数指针
}2.静态成员函数不可以调用非静态成...
貌似很少有把这几件事连在一起讲的,在网上查了好久,也翻了半天书才弄明白整个过程是怎么回事。 先说现象再说原理: 1// vtableTest.cpp : Defines the entry point for the console application.2//3 4 #include "stdafx.h" 5 #include "iostream" 6usingnamespace std;7 8class Base9{
10public:
11virtualvoid function1() {cout << "Base f1" << endl;};
12virtualvoid function2() {cout << "Base f2" << endl;};
13};
1415...
PageView * pageView = PageView::create();
//新建pageView->setContentSize(Size(240.0f, 130.0f));
//设置大小pageView->removeAllPages();//清除所有页pageView->insertPage(layout, i);//插入页pageView->scrollToPage(pageCount-2);//滑动到该页面pageView->addEventLIstener(CC_CALLBACK_2(HelloWorld::pageViewEvent, this));void HelloWorld::pageViewEvent(Ref * pSender, PageView::EventType type){switch (type){case...
//普通四则运算
friend A operator +(const A & lhs, const A & rhs);
friend A operator -(const A & lhs, const A & rhs);
friend A operator *(const A & lhs, const A & rhs);
friend A operator /(const A & lhs, const A & rhs);
friend A operator %(const A & lhs, const A & rhs);
friend A operator *(const A & lhs, constint & rhs);//标量运算,如果存在
friend A operator *(constint & lhs, const A & rhs);//标量运...
本章将介绍函数的定义和声明。然后具体分析三类特殊的函数:内联(inline)函数、类成员函数和重载函数。7.1. 函数的定义 函数由函数名以及一组操作数类型唯一地表示。函数的操作数,也即形参,在一对圆括号中声明,形参与形参之间以逗号分隔。函数执行的运算在一个称为函数体的块语句中定义。每一个函数都有一个相关联的返回类型。 函数的调用 C++ 语言使用调用操作符(即一对圆括号)实现函数的调用。正如其他操作符一样...
写一个小程序来统计函数调用时间,简单明了直接看代码,有三个文件,FunTimer.h , FunTimer.cpp ,FunTimerMan.cpp 分别如下:FunTimer.h文件#ifndef _FUNTIMER_H
#define _FUNTIMER_H#include <iostream>
#include <sys/time.h>
#include <string>
using namespace std;class FunTimer
{public:FunTimer();FunTimer(string funName);~FunTimer();private: string funName;timeval _start;timeval _end;};/**方法一#include <iost...
原文:http://www.cnblogs.com/jeanschen/p/3566177.html
函数的重载看下面的max函数//返回两数间的最大值int max (int num1, int num2) {//比较num1和num2if (num1 >= num2) {return num1; } else {return num2; }
}如果我们想要比较两个浮点数的最大值,那么我们就不能使用max()这个函数了。可实际上max就是返回最大值的意思,应该实现所有数据类型的比较,这时候就要用到函数重载。函数重载,就是改变函数的参数列表而不改变函数名,以实现不同的参数传入。见下面的代码#include ...
关于重载详细分析参考:http://www.cnblogs.com/skynet/archive/2010/09/05/1818636.html内部机制涉及重载函数如何解决命名冲突,调用匹配的问题。 分辨重载的准则:精确匹配:参数匹配而不做转换,或者只是做微不足道的转换,如数组名到指针、函数名到指向函数的指针、T到const T;提升匹配:即整数提升(如bool 到 int、char到int、short 到int),float到double使用标准转换匹配:如int 到double、double到int、double到long do...
C中包含头文件<math.h>C++包含头文件<cmath>函数 double cos(double)该函数返回弧度角(double型)的余弦double tan(double)该函数返回弧度角(double型)的正切double sin(double)该函数返回弧度角(double型)的正弦double log(double)该函数返回参数的自然对数double pow(double x,double y)该函数返回x的y次方double hypot(double)该函数返回两个参数的平方总和的平方根;也就是说,参数作为一个直角三角形的两个直...
程序清单2.5 ourfunc.cpp
//ourfunc.cpp - - defining your own function
#include <iostream>
void simon(int);int main()
{usingnamespace std;simon(3);cout << "Pick an integer:";int count;cin >> count;cin.get();simon(count);cout << "Done!" << endl;cin.get();return0;
}void simon(int n)
{usingnamespace std;cout << "Simon says touch your toes " << n << " times." << endl;
}1.函数格式type functionname(argum...
数据成员的值反应了对象在程序运行某个时刻的状态。数据成员值的改变是由于对象处理了一条消息,往往是某个成员函数被调用。但是有的时候我们希望,成员函数仅仅是访问数据成员而不对其值进行修改。所以,对象的成员函数被分成了两类:1. 修改对象状态的成员函数;2. 获取对象状态的成员函数;而const 成员函数就是为第2个功能而设计。尽管,只要我们在成员函数里不修改对象数据成员的值就可以认为这是一个获取对象状态的成员函数,...